Jak kontrolovat stanice ve vlaknu

Otázka od: Petr Varga

29. 10. 2002 0:17

Ahoj,
mam takovy zvlastni problem.
Mam serverovou aplikaci a spousty klientu (tedy 22). No klienti se
jednou za minutu pripojuji na server a predaji mu zpravu o stavu.
Ale zaroven chci zavest zpetnou kontrolu klientu. Tak jsem na
kazdeho klienta umistil jeste komponentu IDTCPserver a aktivoval
jsem ji. S tim, ze se na ne bude server pokouset pripojovat. Ale
protoze chci aby tato kontrola klientu nejak nezdrzovala server
(resp aby se na nem mohlo v klidu psat a delat jine veci) tak jsem
tuto kontrolu umistil do vlakna. Jenomze s idtcpclient (na serveru)
mohu zachazet jen prez synchonize coz mi zase zdrzuje server. Takze
bych potreboval vedet jak to udelat aby to vlastne bezelo v
samostatnem vlaknu, ale zaroven do hlavniho formulare zapisoval,
zda-li je klient stale v provozu.

A jeste jednu radu bych potreboval. V databazi mam par polozek ktere
jsou boolean. No a je nevhodne kdyz se zobrazuji v dbgridu jako
True/false takze jak to mohu treba predelat na Ano/ne ? Dekuji
predem Petr

---
Stránky o automobilech, novinky, autobazary, nová auta,
příslušenství, pojištění aut... http://automoto.volny.cz

Odpovedá: Petr Vones

29. 10. 2002 1:14

From: "Petr Varga" <djvar@post.cz>
> Mam serverovou aplikaci a spousty klientu (tedy 22). No klienti se jednou za
> minutu pripojuji na server a predaji mu zpravu o stavu. Ale zaroven chci
> zavest zpetnou kontrolu klientu. Tak jsem na kazdeho klienta umistil jeste
> komponentu IDTCPserver a aktivoval jsem ji. S tim, ze se na ne bude server
> pokouset pripojovat. Ale protoze chci aby tato kontrola klientu nejak
> nezdrzovala server (resp aby se na nem mohlo v klidu psat a delat jine veci)
> tak jsem tuto kontrolu umistil do vlakna. Jenomze s idtcpclient (na serveru)
> mohu zachazet jen prez synchonize coz mi zase zdrzuje server. Takze bych
> potreboval vedet jak to udelat aby to vlastne bezelo v samostatnem vlaknu,
> ale zaroven do hlavniho formulare zapisoval, zda-li je klient stale v
> provozu.

Toto je dobry priklad toho kde zacina omezeni vetsiny komponent. Priznam se ze
neznam tak dobre Indy a mam mlhavy pocit, ze to tam snad nejak resit jde, ale
sam jsem do toho nepronikl. Pred casem jsem pro nekoho psal nejake komunikacni
komponenty a nejdrive jsem chtel pouzit Indy. Prave z tohoto duvodu jsem ale
od toho upustil a nakonec pouzil s uspechem Synapsi v threadu (skoda jen ze
neumi pouzivat system eventy), cela vec se tim totiz znacne zjednodusila.
Ohledne indikace vysledku na formulari je to uz horsi, protoze tam se clovek
bez synchronizace neobjde. Zalezi take na mnozstvi tech pozadavku apod. Asi
nejlepsi moznost je asynchronni zpracovani, kde se vysledky ukladaji z threadu
do fronty a ve vhodnem okamziku pak ctou z hlavniho threadu GUI aplikace ve
vetsich davkach a prekresluji dane komponenty.

> A jeste jednu radu bych potreboval. V databazi mam par polozek ktere jsou
> boolean. No a je nevhodne kdyz se zobrazuji v dbgridu jako True/false takze
> jak to mohu treba predelat na Ano/ne ?

viz TBooleanField.DisplayValues property v helpu

Petr Vones